对话框:项目设置: 静态分析灯
象征:
功能:对话框激活使用轻量级版本执行的检查 CODESYS 每次生成代码时进行静态分析。
称呼: 命令, 静态分析灯 类别
额外的编译检查
SA0033:未使用的变量 | 检测已声明但未在编译程序代码中使用的变量 对于 GVL 变量:如果一个项目中存在多个应用程序,则仅影响当前活动应用程序下方的对象。如果只有一个应用程序,则 |
SA0028:重叠的内存区域 | 检测两个或多个变量保留相同内存的代码行 例如,以下声明会发生这种情况: |
SA0006:来自多个任务的写访问 | 检测由多个任务写入的变量 |
SA0004:输出上的多写访问 | 检测写入多个位置的输出 注意:当输出变量 ( 注意:编译指示不能禁用此规则。 |
SA0027:标识符的多种用途 | 检测项目范围内变量或对象 (POU) 的名称/标识符的多次使用 . 检测到以下情况:
|
SA0167:报告临时 FunctionBlock 实例 | 检查检测声明为临时变量的功能块实例。这会影响在方法或函数中声明的实例,或者 |
SA0175:对字符串的可疑操作 | 默认不活动 检测 UTF-8 编码可疑的代码位置 包括以下结构:
根据检查结果,建议不要启用 字符串的 UTF8 编码 编译选项。 有关更多信息,请参阅: 编译选项 |
SA0003:空语句
; (* Comment *); iVar;
SA0006:并发访问
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0004:输出上的多写访问
VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW0 : INT ; END_VAR
PROGRAM PLC_PRG IF iCondition < INT#0 THEN g_xVar := TRUE; g_iTest := INT#12; END_IF
CASE iCondition OF INT#1: g_xVar := FALSE; INT#2: g_iTest := INT#11; ELSE g_xVar := TRUE; g_iTest := INT#9; END_CASE
SA0006:来自多个任务的写访问
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG // Controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //Controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0027:名称的多次使用
PROGRAM PLC_PRG VAR ton : INT; // error SA0027 END_VAR
SA0029:代码中的符号与声明不同
一个 PLC_PRG
POU 和一个 fnc
(函数) POU 存在于设备树中。
PROGRAM PLC_PRG VAR iVar:INT; _123test_var_: INT; END_VAR
ivar := iVar + 1; // notation different to that in the declaration part -> SA0029 _123TEST_var_ := _123test_var_INT; // notation different to that in the declaration part -> SA0029 Fnc(); // notation different to that in the devices tree -> SA0029
SA0167:报告临时 FunctionBlock 实例
PROGRAM PLC_PRG VAR END_VAR VAR_TEMP yafb: AFB; END_VAR
FUNCTION Fun : INT VAR_INPUT END_VAR VAR funafb: AFB; END_VAR
METHOD METH: INT VAR_INPUT END_VAR VAR methafb: AFB; END_VAR
有关更多信息,请参阅: 静态分析代码